import axios from 'axios';
import store from '../store'

const  Ajax =  axios.create({
     //本地访问接口，所以不做代理
     baseURL: '/apis',
    timeout: 50000
}
)

//  请求拦截
// 一般只配置请求拦截即可

Ajax.interceptors.request.use(config=>{

       //console.log("http请求部分--------",config)
       let  token = store.getState().common.token ,
         otherPath = ['/user/login']

      if(otherPath.includes(config.url)){
              
           return config

      }else{

        if (!token){
          return  Promise.reject({code: 0 ,message:'没有通过请求拦截'})
        }else{
          config.headers.token = token
          return config
        }
      }
      


})


  export  default  function(reqObj){

      if(!reqObj.url) throw Error('异步请求的地址不能为空')

      return  new Promise(resolve=>{
        Ajax.request({
            url:reqObj.url,
            method:reqObj.method  || 'GET',
            params:reqObj.params  || {},
            data:reqObj.data || {},
           // (property) AxiosRequestConfig.onUploadProgress?: ((progressEvent: any) => void) | undefined
           // 它接受一个回调方法，会入参一个progressEvent对象
            onUploadProgress: reqObj.progressCB  || (()=>{})
           }).then(({data})=>{
             resolve(data)
           }).catch(e=>{
            resolve(e)
           }) 
      })
      
  }